package com.itbaizhan.openhis.service.impl;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itbaizhan.openhis.domain.DictData;
import com.itbaizhan.openhis.dto.DictDataDto;
import com.itbaizhan.openhis.service.DictDataService;
import com.itbaizhan.openhis.mapper.DictDataMapper;
import com.itbaizhan.openhis.vo.DataGridView;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
* @author MR
* @description 针对表【sys_dict_data(字典数据表)】的数据库操作Service实现
* @createDate 2025-05-19 14:18:22
*/
@Service
public class DictDataServiceImpl extends ServiceImpl<DictDataMapper, DictData>
    implements DictDataService{
	
	@Autowired
	private DictDataMapper dictDataMapper;
	/**
	 * 分页查询
	 * @param dictDataDto
	 * @return
	 */
	public DataGridView listForPage(DictDataDto dictDataDto) {
		//创建一个分页对象Page，使用传入的页码(pageNum)和每页大小(pageSize)
		Page<DictData> page = new Page<>(dictDataDto.getPageNum(), dictDataDto.getPageSize());
		//  条件,不为空的情况下添加条件
		QueryWrapper<DictData> wrapper = new QueryWrapper<>();
		wrapper.eq(StringUtils.isNotBlank(dictDataDto.getDictType()),
				DictData.COL_DICT_TYPE,  dictDataDto.getDictType());
		wrapper.eq(StringUtils.isNotBlank(dictDataDto.getStatus()),
				DictData.COL_STATUS,  dictDataDto.getStatus());
		wrapper.like(StringUtils.isNotBlank(dictDataDto.getDictLabel()),
				DictData.COL_DICT_LABEL,  dictDataDto.getDictLabel());
		//使用MyBatis-Plus的分页查询方法，传入分页对象和查询条件
		dictDataMapper.selectPage(page, wrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}
	
	/**
	 * 根据字典ID查询字典数据
	 * @param dictId
	 * @return
	 */
	@Override
	public DictData selectDictDataById(Long dictId) {
		
		return dictDataMapper.selectById(dictId);
	}
	
	@Override
	public int insert(DictDataDto dictDataDto) {
		DictData dictData = new DictData();
		
		BeanUtils.copyProperties(dictDataDto, dictData);
		dictData.setCreateBy(dictDataDto.getSimpleUser().getUserName());
		dictData.setCreateTime(DateUtil.date());
		return dictDataMapper.insert(dictData);
		
	}
	
	/**
	 * 修改字典数据
	 * @param dictDataDto
	 * @return
	 */
	@Override
	public int update(DictDataDto dictDataDto) {
		DictData dictData = new DictData();
		
		BeanUtils.copyProperties(dictDataDto, dictData);
		dictData.setUpdateBy(dictDataDto.getSimpleUser().getUserName());
		dictData.setUpdateTime(DateUtil.date());
		return dictDataMapper.updateById(dictData);
	}
	
	/**
	 * 删除字典数据
	 * @param dictIds
	 * @return
	 */
	@Override
	public int deleteDictData(Long[] dictIds) {
		List<Long> ids = Arrays.asList(dictIds);
		if (ids != null&& ids.size()>0){
			return dictDataMapper.deleteBatchIds(ids);
		}else{
			//代表没有删除任何数据
			//rows > 0 ? AjaxResult.success() : AjaxResult.fail()
			return 0;
		}
	}
}




